import apis from '@/apis/index.js';
/**
 * 接口错误上报
 * @param {*} error
 */
function errorHandler(error) {
  window.ClientMonitor.reportFrameErrors(
    {
      // 类型
      category: 'query',
      // 级别
      grade: 'Qurey',
    },
    error
  );
}
/**
 * 检查接口状态码
 * @param {{status_code: number/String ;msg: string}}
 */
function checkoutStatus(code, res) {
  if (+code === 0) {
    return true;
  } else {
    errorHandler({
      name: '-',
      message: res ? res : '没有错误返回',
      stack: '-',
    });
    return false;
  }
}
/**
 * 普通返回处理
 * res
 */
function normalReturn(params) {
  const { res, resolve, reject, code } = params;
  if (checkoutStatus(res[code], res)) {
    resolve(res);
  } else {
    reject(res);
  }
}
/**
 * 常规处理,状态码与接口异常都返回catch
 */
function listQuery(params, func, code = 'status_code') {
  return new Promise((resolve, reject) => {
    func(params)
      .then(res => {
        normalReturn({ res, resolve, reject, code });
      })
      .catch(err => {
        errorHandler(err);
        reject(err);
      });
  });
}

const query = {
  /**
   * 取投资热讯
   * @param {number}
   */
  getHotNews(params) {
    return listQuery(params, apis.getHotNews);
  },

  // 预约直播
  bookLive(params) {
    return listQuery(params, apis.bookLive);
  },

  // 直播列表
  getLivePage(params) {
    return listQuery(params, apis.livePage);
  },
  // 直播列表标签
  getLiveTabs(params) {
    return listQuery(params, apis.liveTabs);
  },
  // 图文直播标签
  getWordLiveInfo(params) {
    return listQuery(params, apis.wordLiveInfo);
  },
  // 图文直播列表
  getWordLiveList(params) {
    return listQuery(params, apis.wordLiveList);
  },
  // 课程列表
  getCourseList(params) {
    return listQuery(params, apis.courseList);
  },
  // 直播banner
  getLiveBanner(params) {
    return listQuery(params, apis.liveBanner);
  },
  //取系列课程列表
  getSeqList(params) {
    return listQuery(params, apis.getSeqList);
  },
  //取赠送课程列表
  getGiveList(params) {
    return listQuery(params, apis.getGiveList);
  },
};

export default query;
